
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.brain.capa.view.mbean;

import com.brain.capa.dto.AreaPresupuestoDto;
import com.brain.capa.manager.AreaPresupuestoManager;
import com.brain.capa.view.util.ConstantesCapa;
import com.brain.core.dto.ParametroDto;
import com.brain.core.exception.DAOException;
import com.brain.core.view.mbean.*;
import com.brain.core.manager.RecursosManager;
import com.brain.sgc.view.util.ConstantesSgc;
import java.io.Serializable;
import java.util.List;

import javax.annotation.Resource;
import org.apache.log4j.Logger;
import org.primefaces.context.RequestContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

/**
 *
 * @author Hvives
 */
@Controller("areaPresupuestoMBean")
@Scope("session")
public class AreaPresupuestoMBean extends GenericMBean implements Serializable {

    private static Logger logger = Logger.getLogger(AreaPresupuestoMBean.class);
    @Resource
    private RecursosManager recursosManager;
    @Resource
    private AreaPresupuestoManager manager;
    private List<ParametroDto> lista;
    private List<AreaPresupuestoDto> listaHijos;
    private ParametroDto dto;
    private AreaPresupuestoDto dtoHijo;
    private String keyTitulo = "area.presupuesto.panel";
    @Autowired
    private ApplicationMBean applicationMBean;
    @Autowired
    private SessionMBean sessionMBean;

    public AreaPresupuestoMBean() {
    }

    public String iniciar() {
        this.dto = null;
        this.lista = null;
        this.obtenerAreasActivas();
        return ConstantesCapa.UrlNavegacion.URL_LISTA_AREA;
    }

    public String entrar() {
        sessionMBean.setTitulo(recursosManager.construirTitulo(keyTitulo, sessionMBean.getAccion()));
        this.obtenerPresupuestoPorArea();
        return ConstantesCapa.UrlNavegacion.URL_LISTA_PRESUPUESTO_POR_ANIO;
    }

    public void nuevo() {
        sessionMBean.setAccion(ConstantesSgc.Formulario.NUEVO);
        sessionMBean.setTitulo(recursosManager.construirTitulo(keyTitulo, sessionMBean.getAccion()));
        this.dtoHijo = manager.inicializar();
        this.dtoHijo.setAreaDto(this.dto);
    }

    public String ver() {
        sessionMBean.setAccion(ConstantesSgc.Formulario.VER);
        sessionMBean.setTitulo(recursosManager.construirTitulo(keyTitulo, sessionMBean.getAccion()));        
        return ConstantesCapa.UrlNavegacion.URL_CURSO;
    }

    public void guardar() {
        RequestContext context = RequestContext.getCurrentInstance();
        Boolean resultado = true;
        if (this.manager.guardar(this.dtoHijo) != null) {
            this.obtenerPresupuestoPorArea();
        }else{
            resultado = false;
        }
        context.addCallbackParam("CallbackParam", resultado);
    }

    public void eliminar() {
        try {
            this.manager.eliminar(dtoHijo);
            this.obtenerPresupuestoPorArea();
        } catch (DAOException ex) {
            logger.error("ERROR DE SISTEMA", ex);
        }
    }

    protected void obtenerPresupuestoPorArea() {
        try {
            this.listaHijos = this.manager.obtenerListaHijos(this.dto.getId());
        } catch (DAOException ex) {
            logger.error("ERROR DE SISTEMA", ex);
        }
    }

    protected void obtenerAreasActivas() {
        this.lista = this.recursosManager.obtenerParametrosActivosPorCatalogoSistema(ConstantesSgc.CatalogoParametro.AREA);
    }

    public String retroceder() {
        this.obtenerAreasActivas();
        sessionMBean.setAccion(ConstantesSgc.Formulario.LISTA);
        sessionMBean().setTitulo(recursosManager.construirTitulo(keyTitulo, sessionMBean().getAccion()));
        return ConstantesCapa.UrlNavegacion.URL_LISTA_AREA;
    }

    public List<ParametroDto> getLista() {
        return lista;
    }

    public void setLista(List<ParametroDto> lista) {
        this.lista = lista;
    }

    public ParametroDto getDto() {
        return dto;
    }

    public void setDto(ParametroDto dto) {
        this.dto = dto;
    }

    public AreaPresupuestoDto getDtoHijo() {
        return dtoHijo;
    }

    public void setDtoHijo(AreaPresupuestoDto dtoHijo) {
        this.dtoHijo = dtoHijo;
    }

    public SessionMBean getSessionMBean() {
        return sessionMBean;
    }

    public void setSessionMBean(SessionMBean sessionMBean) {
        this.sessionMBean = sessionMBean;
    }

    public List<AreaPresupuestoDto> getListaHijos() {
        return listaHijos;
    }

    public void setListaHijos(List<AreaPresupuestoDto> listaHijos) {
        this.listaHijos = listaHijos;
    }
}
